package servlets;

import basicas.Usuario;
import fachadas.FachadaDePerguntas;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import pergunta.Pergunta;

/**
 *
 * @author Diego
 */
public class ProcessdorDeResposta extends HttpServlet {
    
    private int calcularAcertos(List<String> respostas,List<Pergunta> listaPerguntas){
            int acertos = 0;
            String valorInformado;
            String valorCerto;
            int i = 0;
            
            do{
                valorInformado = respostas.get(i);
                valorCerto = listaPerguntas.get(i).getCorreta();
                
                if(valorCerto.equals(valorInformado)){
                    listaPerguntas.get(i).setAcertou(true);
                    acertos++;
                }
                else{
                    listaPerguntas.get(i).setAcertou(false);
                }
                
                i++;
                
                if(i >= respostas.size()) break;
            }while(i < respostas.size());
            
            return acertos;
    }
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         HttpSession sessao = request.getSession();
        List<Pergunta> listaDePerguntas = (List) sessao.getAttribute("lista");
        List<String> respostas = (List) sessao.getAttribute("respostas");
        FachadaDePerguntas f = FachadaDePerguntas.getInstance();
        int qtdadeAcertos = 0;
        int totalRespondidas = respostas.size();
        Usuario user = (Usuario) sessao.getAttribute("usuario");
        
    
        qtdadeAcertos = calcularAcertos(respostas,listaDePerguntas);
       
       
        f.atualizarEstatisticas(user.getId(), qtdadeAcertos,(totalRespondidas-qtdadeAcertos),totalRespondidas);
        f.atualizarEstatisticasDetalhadas(listaDePerguntas, user.getId());
        f.atualizarRanking(user.getId(), qtdadeAcertos);
        
        request.setAttribute("acertos", qtdadeAcertos);
        request.setAttribute("total",totalRespondidas);
        
        sessao.removeAttribute("respostas");
        sessao.setAttribute("respostas", respostas);
        sessao.setAttribute("respostasCertas", listaDePerguntas);
        
        request.getRequestDispatcher("User/Resposta.jsp").forward(request, response);
        
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
